package cn.tedu._06vehicle.controller;

import cn.tedu._06vehicle.base.response.JsonResult;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Slf4j
@RestController
@Tag(name = "文件上传窗口")
@RequestMapping("/v1/file/")
public class UploadController {

    /**
     * 文件上传功能
     * 参数：MultipartFile file 代表客户端传递过来的文件对象
     *
     */
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //终极目标：将文件保存到服务器中，目录：D:/files
        //1 获取原始文件名
        String filename=file.getOriginalFilename();
        log.debug("原始文件名:"+filename);
        log.debug("文件大小:"+file.getSize());
        //生成全球唯一的文件名
        //1.获取文件名后缀
        String suffix=filename.substring(filename.lastIndexOf("."));
        log.debug("文件后缀："+suffix);
        //2.生成全球唯一的文件名，使用UUID +文件后缀名
        UUID uuid=UUID.randomUUID();
        log.debug("uuid:"+uuid);
        filename=uuid+suffix;
        log.debug("全球唯一文件名："+filename);
        //3.处理日期路径：/2025/10/21/
        //创建SimpleDateFormat对象，生成时间字符串
        SimpleDateFormat sdf  = new SimpleDateFormat("/yyyy/MM/dd/");
        String datePath=sdf.format(new Date());
        //4.创建目录：D:/files/2025/10/21/
        String dirPath="D:/flies"+datePath;
        File f=new File(dirPath);
        log.debug("目录名称："+dirPath);
        if (!f.exists()){
            f.mkdirs();
        }
        //5.保存文件
        String filePath=dirPath+filename;
        file.transferTo(new File(filePath));
        //返回结果
        return JsonResult.OK(dirPath+filename);
    }


}
